<?php
/**
 * ALIPAY API: alipay.acquire.createandpay request
 *
 * @author auto create
 *
 * @since  1.0, 2018-06-15 16:56:59
 */

namespace Alipay\Request;

class AlipayAcquireCreateandpayRequest extends AbstractAlipayRequest
{
    /**
     * 证书签名
     **/
    private $alipayCaRequest;
    /**
     * 对一笔交易的具体描述信息。如果是多种商品，请将商品描述字符串累加传给body。
     **/
    private $body;
    /**
     * 买家支付宝账号，可以为email或者手机号。
     **/
    private $buyerEmail;
    /**
     * 买家支付宝账号对应的支付宝唯一用户号。
     * 以2088开头的纯16位数字。
     **/
    private $buyerId;
    /**
     * 描述多渠道收单的渠道明细信息，json格式，具体请参见“4.5 渠道明细说明”。
     **/
    private $channelParameters;
    /**
     * 订单金额币种。
     * 目前只支持传入156（人民币）。
     * 如果为空，则默认设置为156。
     **/
    private $currency;
    /**
     * 动态ID。
     **/
    private $dynamicId;
    /**
     * 动态ID类型：
     * &#1048698;
     * soundwave：声波
     * &#1048698;
     * qrcode：二维码
     * &#1048698;
     * barcode：条码
     * &#1048698;
     * wave_code：声波，等同soundwave
     * &#1048698;
     * qr_code：二维码，等同qrcode
     * &#1048698;
     * bar_code：条码，等同barcode
     * 建议取值wave_code、qr_code、bar_code。
     **/
    private $dynamicIdType;
    /**
     * 用于商户的特定业务信息的传递，只有商户与支付宝约定了传递此参数且约定了参数含义，此参数才有效。
     * 比如可传递声波支付场景下的门店ID等信息，以json格式传输，具体请参见“4.7 业务扩展参数说明”。
     **/
    private $extendParams;
    /**
     * xml或json
     **/
    private $formatType;
    /**
     * 描述商品明细信息，json格式，具体请参见“4.3 商品明细说明”。
     **/
    private $goodsDetail;
    /**
     * 设置未付款交易的超时时间，一旦超时，该笔交易就会自动被关闭。
     * 取值范围：1m～15d。
     * m-分钟，h-小时，d-天，1c-当天（无论交易何时创建，都在0点关闭）。
     * 该参数数值不接受小数点，如1.5h，可转换为90m。
     * 该功能需要联系支付宝配置关闭时间。
     **/
    private $itBPay;
    /**
     * 描述预付卡相关的明细信息，json格式，具体请参见“4.8 预付卡明细参数说明”。
     **/
    private $mcardParameters;
    /**
     * 卖家的操作员ID。
     **/
    private $operatorId;
    /**
     * 操作员的类型：
     * &#1048698;
     * 0：支付宝操作员
     * &#1048698;
     * 1：商户的操作员
     * 如果传入其它值或者为空，则默认设置为1。
     **/
    private $operatorType;
    /**
     * 支付宝合作商户网站唯一订单号。
     **/
    private $outTradeNo;
    /**
     * 订单中商品的单价。
     * 如果请求时传入本参数，则必须满足total_fee=price×quantity的条件。
     **/
    private $price;
    /**
     * 订单中商品的数量。
     * 如果请求时传入本参数，则必须满足total_fee=price×quantity的条件。
     **/
    private $quantity;
    /**
     * 业务关联ID集合，用于放置商户的订单号、支付流水号等信息，json格式，具体请参见“4.6 业务关联ID集合说明”。
     **/
    private $refIds;
    /**
     * 描述分账明细信息，json格式，具体请参见“4.4 分账明细说明”。
     **/
    private $royaltyParameters;
    /**
     * 卖家的分账类型，目前只支持传入ROYALTY（普通分账类型）。
     **/
    private $royaltyType;
    /**
     * 卖家支付宝账号，可以为email或者手机号。
     * 如果seller_id不为空，则以seller_id的值作为卖家账号，忽略本参数。
     **/
    private $sellerEmail;
    /**
     * 卖家支付宝账号对应的支付宝唯一用户号。
     * 以2088开头的纯16位数字。
     * 如果和seller_email同时为空，则本参数默认填充partner的值。
     **/
    private $sellerId;
    /**
     * 收银台页面上，商品展示的超链接。
     **/
    private $showUrl;
    /**
     * 商品的标题/交易标题/订单标题/订单关键字等。
     * 该参数最长为128个汉字。
     **/
    private $subject;
    /**
     * 该笔订单的资金总额，取值范围[0.01,100000000]，精确到小数点后2位。
     **/
    private $totalFee;

    public function setAlipayCaRequest($alipayCaRequest)
    {
        $this->alipayCaRequest = $alipayCaRequest;
        $this->apiParams['alipay_ca_request'] = $alipayCaRequest;
    }

    public function getAlipayCaRequest()
    {
        return $this->alipayCaRequest;
    }

    public function setBody($body)
    {
        $this->body = $body;
        $this->apiParams['body'] = $body;
    }

    public function getBody()
    {
        return $this->body;
    }

    public function setBuyerEmail($buyerEmail)
    {
        $this->buyerEmail = $buyerEmail;
        $this->apiParams['buyer_email'] = $buyerEmail;
    }

    public function getBuyerEmail()
    {
        return $this->buyerEmail;
    }

    public function setBuyerId($buyerId)
    {
        $this->buyerId = $buyerId;
        $this->apiParams['buyer_id'] = $buyerId;
    }

    public function getBuyerId()
    {
        return $this->buyerId;
    }

    public function setChannelParameters($channelParameters)
    {
        $this->channelParameters = $channelParameters;
        $this->apiParams['channel_parameters'] = $channelParameters;
    }

    public function getChannelParameters()
    {
        return $this->channelParameters;
    }

    public function setCurrency($currency)
    {
        $this->currency = $currency;
        $this->apiParams['currency'] = $currency;
    }

    public function getCurrency()
    {
        return $this->currency;
    }

    public function setDynamicId($dynamicId)
    {
        $this->dynamicId = $dynamicId;
        $this->apiParams['dynamic_id'] = $dynamicId;
    }

    public function getDynamicId()
    {
        return $this->dynamicId;
    }

    public function setDynamicIdType($dynamicIdType)
    {
        $this->dynamicIdType = $dynamicIdType;
        $this->apiParams['dynamic_id_type'] = $dynamicIdType;
    }

    public function getDynamicIdType()
    {
        return $this->dynamicIdType;
    }

    public function setExtendParams($extendParams)
    {
        $this->extendParams = $extendParams;
        $this->apiParams['extend_params'] = $extendParams;
    }

    public function getExtendParams()
    {
        return $this->extendParams;
    }

    public function setFormatType($formatType)
    {
        $this->formatType = $formatType;
        $this->apiParams['format_type'] = $formatType;
    }

    public function getFormatType()
    {
        return $this->formatType;
    }

    public function setGoodsDetail($goodsDetail)
    {
        $this->goodsDetail = $goodsDetail;
        $this->apiParams['goods_detail'] = $goodsDetail;
    }

    public function getGoodsDetail()
    {
        return $this->goodsDetail;
    }

    public function setItBPay($itBPay)
    {
        $this->itBPay = $itBPay;
        $this->apiParams['it_b_pay'] = $itBPay;
    }

    public function getItBPay()
    {
        return $this->itBPay;
    }

    public function setMcardParameters($mcardParameters)
    {
        $this->mcardParameters = $mcardParameters;
        $this->apiParams['mcard_parameters'] = $mcardParameters;
    }

    public function getMcardParameters()
    {
        return $this->mcardParameters;
    }

    public function setOperatorId($operatorId)
    {
        $this->operatorId = $operatorId;
        $this->apiParams['operator_id'] = $operatorId;
    }

    public function getOperatorId()
    {
        return $this->operatorId;
    }

    public function setOperatorType($operatorType)
    {
        $this->operatorType = $operatorType;
        $this->apiParams['operator_type'] = $operatorType;
    }

    public function getOperatorType()
    {
        return $this->operatorType;
    }

    public function setOutTradeNo($outTradeNo)
    {
        $this->outTradeNo = $outTradeNo;
        $this->apiParams['out_trade_no'] = $outTradeNo;
    }

    public function getOutTradeNo()
    {
        return $this->outTradeNo;
    }

    public function setPrice($price)
    {
        $this->price = $price;
        $this->apiParams['price'] = $price;
    }

    public function getPrice()
    {
        return $this->price;
    }

    public function setQuantity($quantity)
    {
        $this->quantity = $quantity;
        $this->apiParams['quantity'] = $quantity;
    }

    public function getQuantity()
    {
        return $this->quantity;
    }

    public function setRefIds($refIds)
    {
        $this->refIds = $refIds;
        $this->apiParams['ref_ids'] = $refIds;
    }

    public function getRefIds()
    {
        return $this->refIds;
    }

    public function setRoyaltyParameters($royaltyParameters)
    {
        $this->royaltyParameters = $royaltyParameters;
        $this->apiParams['royalty_parameters'] = $royaltyParameters;
    }

    public function getRoyaltyParameters()
    {
        return $this->royaltyParameters;
    }

    public function setRoyaltyType($royaltyType)
    {
        $this->royaltyType = $royaltyType;
        $this->apiParams['royalty_type'] = $royaltyType;
    }

    public function getRoyaltyType()
    {
        return $this->royaltyType;
    }

    public function setSellerEmail($sellerEmail)
    {
        $this->sellerEmail = $sellerEmail;
        $this->apiParams['seller_email'] = $sellerEmail;
    }

    public function getSellerEmail()
    {
        return $this->sellerEmail;
    }

    public function setSellerId($sellerId)
    {
        $this->sellerId = $sellerId;
        $this->apiParams['seller_id'] = $sellerId;
    }

    public function getSellerId()
    {
        return $this->sellerId;
    }

    public function setShowUrl($showUrl)
    {
        $this->showUrl = $showUrl;
        $this->apiParams['show_url'] = $showUrl;
    }

    public function getShowUrl()
    {
        return $this->showUrl;
    }

    public function setSubject($subject)
    {
        $this->subject = $subject;
        $this->apiParams['subject'] = $subject;
    }

    public function getSubject()
    {
        return $this->subject;
    }

    public function setTotalFee($totalFee)
    {
        $this->totalFee = $totalFee;
        $this->apiParams['total_fee'] = $totalFee;
    }

    public function getTotalFee()
    {
        return $this->totalFee;
    }
}
